import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import fs from 'fs'
import path from 'path'

// 同步读取public目录下的配置文件
const configPath = path.resolve(__dirname, 'public/app-config.json')
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'))

// 全局引入element-plus主题色
import AutoImport from 'unplugin-auto-import/vite'  //自动导入vue中的组件
import Components from 'unplugin-vue-components/vite' // 自动导入ui-组件，比如element-plus等
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' //对应组件库引入，AntDesignVueResolver
// 全局引入element-plus主题色-end

// https://vite.dev/config/
export default defineConfig({
  server: {
    port: 9000,
    open: true, // 是否自动打开
    host: true,
    // 解决跨域问题，使用前端正向代理，将含有api的请求路由交由前端服务来代理发送
    proxy: {
      '/api': {//获取路径中包含了/api的请求
        target: config.API_BASE_URL,
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  },
  plugins: [
    vue(),
    // element-plus按需导入
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers:[
        // 配置element-plus采用sass样式配置系统
        ElementPlusResolver({importStyle:"sass"})
      ],
    })
    // element-plus按需导入-end
  ],
    // element-plus按需导入
  css:{
    preprocessorOptions:{
      scss:{
        additionalData:`@use "@/assets/css/index.scss" as *;`
      }
    }
  },
    // element-plus按需导入-end
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})
